23 #define foreach(x, v) for (typeof (v).begin() x=(v).begin(); x !=(v).end(); ++x)
24 #define For(i, a, b) for (int i=(a); i<(b); ++i)
25 #define D(x) cout << #x " is " << x << endl
27 const int MAXN
= 1000001 * 2;
36 if (n
== 1 and s
[0] == '.') break;
42 for (int i
= n
; i
< 2 * n
; ++i
) {
46 assert(strlen(s
) == 2 * n
);
49 for (int i
= 1; i
< 2 * n
; ++i
) {
50 int k
= border
[i
- 1];
51 while (k
> 0 and s
[i
] != s
[k
]) k
= border
[k
- 1];
52 if (s
[i
] == s
[k
]) k
++;
56 for (int i
= n
; i
< 2 * n
; ++i
) {
58 assert(n
% (i
- n
+ 1) == 0);
59 printf("%d\n", n
/ (i
- n
+ 1));